home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / data / wtmr / wtmr_b.mac < prev    next >
Text File  |  1995-02-13  |  25KB  |  1,031 lines

  1. #=========================================================================
  2. #WTERM マクロプログラム ビギナー会員専用 WTMR_B.MAC V10.5
  3. #=========================================================================
  4.  
  5. START:                        #WTMR.MACから。
  6. CALL(LOOP0)
  7. SEND("\R")
  8. CALL(LOOP0)
  9. LOGOPEN("MAR")
  10. GETCRTS(M$,"15")            #ビギナー会員の場合には表示行数が多い。
  11. GETCRTS(N$,"16")            #未読確認のための変数格納。
  12. C$="C\R"
  13. WAIT("")
  14. SEND("ESC OFF\R")
  15. CALL(LOOP0)
  16. SEND("NAP OFF\R")
  17. CALL(LOOP0)
  18.  
  19. #=========================================================================
  20. DIR00:                        #発言ルーチン。
  21. PRINTCR("□書き込み指定ファイル捜査中です□")
  22. GETMACROD(I$)                #I$=D:\WT\MACRO\
  23. CAT(I$,"_PAD_.PAD")            #I$=D:\WT\MACRO\_PAD_.PAD
  24. IFFILEY(I$)                    #I$=D:\WT\MACRO\_PAD_.PADがある場合。
  25.     DELFILE(I$)                #D:\WT\MACRO\_PAD_.PADを削除。
  26. GETTXUPD(D$)                #D$=G:\UP_TXT\
  27. CAT(G$,D$,Y)                #末尾\カットのためのダミーY追加。G$=G:\WT\UP_TXT\Y。
  28. CHANGE(G$,"\Y"," >")        #G$=G:\UP_TXT >
  29. CAT(E$,"DIR ",G$)            #E$=DIR G:\WT\UP_TXT >
  30. CAT(E$,D$)                    #E$=DIR G:\WT\UP_TXT >G:\WT\UP_TXT\
  31. CAT(E$,"DIR.TXT")            #E$=DIR G:\WT\UP_TXT >G:\WT\UP_TXT\DIR.TXT
  32. CHILD(E$)                    #E$を実行。DIR.TXT作成。既にあれば,上書き。
  33. PICKWORD(F$,E$,">")            #E$を>で区切る。E$=G:\WT\UP_TXT\DIR.TXT
  34. DELAYM(1000)                #同期調整。
  35. G$=6                        #読み込み行初期値-1
  36.  
  37. DIR:
  38. WOPEN("_PAD_.PAD")            #MACROディレクトリに,送信指定ファイル作成。
  39. WCLOSE                        #いったん閉じる。WAPPENDのため。
  40. FOPEN(E$)                    #DIR.TXTオープン。
  41.  
  42. DIR1:
  43. A$=""
  44. ADD(G$,G$,"1")                #読み込み行+1
  45. CAT(A$,G$,"")                #A$=G$
  46. FILER(E$,A$)                #DIR.TXTからA行目読み込み。A$に格納。
  47. JUMPSRCHY(A$,"ファイ",NEX)    #ファイル末。NEXへ。
  48. JUMPSRCHY(A$,"<DIR>",DIR1)    #ディレクトリ行。DIR1へ戻る。
  49. JUMPSRCHN(A$,"RES",DIR1)    #拡張子がRESでないファイル行。DIR1へ戻る。
  50. JUMPSRCHY(A$,"は",DIR1)        #説明行。DIR1へ戻る。
  51. FCLOSE                        #DIR.TXT閉じる。
  52. WAPPEND("_PAD_.PAD")        #追加書き込みファイルオープン。
  53. PICKWORD(V$,A$," ")            #A$=  EXE   8,234 95-01-01   1:00  など。空白で区切。
  54. JUMPSRCHN(A$,"RES",DIR1)    #A$にRESがなければ,DIR1へ。あれば下の処理へ。
  55. WRITE(V$)                    #_PAD_.PADに,V$=12_45 などを書き込み。
  56. WCLOSE                        #_PAD_.PAD閉じる。
  57. FOPEN(E$)                    #DIR.TXTオープン。
  58. VCLEAR("AV")                #A$,V$初期化。
  59. GOTO(DIR1)                    #DIR1へ戻る。
  60.  
  61. NEX:                        #DIR.TXT読み込み終了後処理。
  62. FCLOSE                        #DIR.TXT閉じる。
  63. DELFILE(E$)                    #DIR.TXT削除。E$不要。
  64. FOPEN("_PAD_.PAD")            #_PAD_.PAD読み込みオープン。
  65.  
  66. UPT:                        #_PAD_.PAD指定内容による分岐ルーチン。
  67. FREAD(A$,UPTEND)            #A$に_PAD_.PADから一行読み込み。EOFならば,終了処理。
  68. GETTXUPD(D$)                #D$=G:\UP_TXT\
  69. CAT(D$,A$)                    #D$=G:\WT\UP_TXT\12_505
  70. CAT(D$,".RES")                #D$=G:\WT\UP_TXT\12_505.RES
  71. ROPEN(D$)                    #アップ文書ファイルオープン。
  72. RREAD(K$)                    #K$=TITLE(アップ文書ファイル一行目)
  73. LEFT(K$,"30")                #K$=TITLE,30文字以上をカット。
  74. JUMPSRCHY(A$,"MAR0",ML)        #MAIL指定(MAR0****.RES)の場合,MLへ分岐。
  75.  
  76. #-------------------------------------------------------------------------
  77. BS:                            #会議室発言の場合。
  78. H$="_"                        #区切り文字。
  79. VCLEAR("FS")
  80. PICKWORD(J$,A$,H$)            #J$=12,A$=505 or W など。
  81. CAT(S$,J$,"")                #S$=J$=12
  82. CAT(S$,")")                    #現在会議室番号取得ルーチン。
  83. CAT(F$,"D",S$)                #F$=D12)
  84. JUMPSRCHY(Z$,F$,BBSWW)        #Z$は,プロンプトの行を格納している。居場所の確認。
  85. VCLEAR("FHLSZ")
  86. SEND(J$)                    #J$=12(会議室番号)送信。
  87. SEND("\R")
  88. CALL(LOOP0)                    #PROMPT待ち。
  89. GETCRTS(H$,"2")                #入れない会議室の場合は,RETRYへ分岐。
  90. JUMPSRCHY(H$,"◆",RETRY)
  91.  
  92. BBSWW:                        #発言が,レスか,オリジナルかの分岐。
  93. JUMPE(A$,"W",BS_0)            #J$=Wの場合(オリジナル発言),BS_0へ。
  94. CAT(L$,"RES ",A$)            #L$=RES 505
  95. VSWAP(L$,A$)                #L$とA$を交換。A$=RES 505
  96.  
  97. BS_0:
  98. SEND(A$)                    #レス先番号 or W 送信。
  99. SEND("\R")
  100. CALL(LOOP0)
  101. GETCRTS(H$,"2")                #書き込めない会議室の場合は,RETRYへ分岐。
  102. JUMPSRCHY(H$,"◆",RETRY)
  103. CONVERT(OFF)                #制御文字非変換。
  104. SEND(K$)                    #TITLE送信。
  105. CONVERT(ON)
  106. SEND("\R")
  107. CALL(LOOP0)
  108. GETCRTS(H$,"1")                #TITLE入力ミスの確認。
  109. T$="BBSW1"                    #この場合は,TITMIS0で使用する居場所フラグ。
  110. JUMPSRCHN(H$,"確認",TITMIS0)
  111.  
  112. BBSW1:
  113. SEND("\R")                    #TITLE確認。
  114. T$="BBS0"                    #この場合は,EOFで使用する居場所フラグ。
  115. CALL(LOOP0)
  116. GOTO(SEND)                    #汎用送信ループへ。
  117.  
  118. BBS0:                        #/Eがない場合,/E送信後処理。EOFから。
  119. CALL(LOOP0)
  120. SEND("\R")                    #修正確認。
  121. CALL(LOOP0)
  122. SEND("\R")                    #登録確認。
  123.  
  124. BBS0_:                        #登録確認後。EOF_から。会議室書き込み最終処理。
  125. RCLOSE                        #送信済ファイル閉じる。
  126. CALL(LOOP0)
  127. V$="namv -a "                #NAMV.EXEを使用。
  128. CAT(V$,D$)                    #V$=namv -a G:\WT\UP_TXT\12_505.RES
  129. Q$=" $(TxtUpD)DONE\"        #Q$はMAILルーチンでも使用。
  130. CAT(V$,Q$)
  131. CHILD(V$)                    #送信済ファイル移動。
  132. VCLEAR("AJL")
  133. GOTO(DAT__)                    #CHAT判断ルーチン,後_PAD_.RAD読み込み分岐へ。
  134.  
  135. #=========================================================================
  136. ML:                            #A$=MAR0****。MAIL先ID。
  137. JUMPSRCHY(Z$,"MAIL",MAIL1)    #Z$はプロンプト行を格納している。MAIL MODEか否か確認。
  138. Z$=""                        #Z$初期化。
  139. SEND("M\R")                    #MAIL MODEへ。
  140. CALL(LOOP0)
  141.  
  142. MAIL1:
  143. SEND("W\R")                    #書き込み送信。
  144. CALL(LOOP0)
  145. CONVERT(OFF)
  146. SEND(K$)                    #TITLE送信。TITLEはUPTでカット済。
  147. CONVERT(ON)
  148. SEND("\R")
  149. CALL(LOOP0)
  150. GETCRTS(H$,"1")                #TITLE確認。ミスがあれば,TITMIS0へ。
  151. T$="MAIL01"                    #TITMIS0で使用する居場所フラグ。
  152. JUMPSRCHN(H$,"確認",TITMIS0)
  153.  
  154. MAIL01:
  155. SEND("\R")                    #TITLE修正確認。
  156. T$="MAIL0"                    #NEXT_で使用する居場所フラグ。
  157. CALL(LOOP0)
  158. GOTO(SEND)                    #汎用送信ループへ。
  159.  
  160. MAIL0:
  161. CALL(LOOP0)                    #/E送信後。
  162. SEND("\R")                    #修正確認。
  163.  
  164. MAIL0_:                        #修正確認後,から。
  165. CALL(LOOP0)
  166. SEND(A$)                    #A$は送信先ID,UPTで設定。宛先送信。
  167. SEND("\R")
  168. U$="MAIL000"                #IDMISの場合の居場所フラグ。
  169. STIMEOUT(2)
  170. SWITCH
  171.     CASE("◆")                #エラーメッセージの有無確認。
  172.         GOTO(IDMIS)
  173. END
  174. CALL(LOOP0)
  175. SEND("\R")                    #宛先登録確認。
  176.  
  177. MAIL000:                    #送信済ファイル移動処理。MAIL送信最終処理。
  178. CALL(LOOP0)
  179. RCLOSE                        #送信済ファイル閉じる。
  180. V$="namv -a "
  181. Q$=" $(TxtUpD)DONE\"
  182. CAT(V$,D$)                    #V$=namv -a G:\WT\UP_TXT\MAR*****.RES
  183. CAT(V$,Q$)
  184. CHILD(V$)                    #送信済ファイル移動。
  185. VCLEAR("LJF")                #J$,L$は会議室番号,レス先番号等で使用。
  186. GOTO(DAT__)                    #CHAT判断ルーチン,後_PAD_.PAD読み込み分岐へ。
  187.  
  188. #=========================================================================
  189. SEND:                        #汎用文書送信用ルーチン。EOFとセット。
  190. RREAD(F$,EOF)                #発言ファイル読込。続きがなければ終了処理へ。
  191. JUMPE(F$,"/E",NEXT_)        #/Eがある場合,NEXT_へ分岐。
  192. CONVERT(OFF)
  193. SEND(F$)                    #発言ファイル内容一行送信。
  194. CONVERT(ON)
  195. SEND("\R")
  196. GOTO(SEND)                    #SENDへ戻る。
  197.  
  198. EOF:                        #アップ文書終了処理。
  199. SEND("/E\R")                #/Eがないので,/E送信。
  200. GOTO(T$)                    #指定されたT$のラベルへ。
  201.  
  202. #=========================================================================
  203. TITMIS0:                    #会議室,メール,共用タイトルミス処理ルーチン。
  204. SEND("Title つけ忘れです m(_._)m\R")
  205. WAIT(":")
  206. GOTO(T$)                    #T$は居場所フラグ。
  207.  
  208. #=========================================================================
  209. DAT__:                        #UPT処理内CHAT判断ルーチン。
  210. VSWITCH(R$)                    #LOOP0でR$を設定。
  211.     CASE("C")                #フラグがCの場合。
  212.         CALL(CHAT)            #CHATへ。
  213.         VCLEAR("R")            #R$を初期化。
  214.         GOTO(UPT)            #_PAD_.PADファイル指定読み込みルーチンへ。
  215.     ELSE                    #フラグがCでない場合。
  216.         GOTO(UPT)            #_PAD_.PAD読み込み分岐へ。
  217. END
  218.  
  219. #=========================================================================
  220. UPTEND:                        #UPTから,_PAD_.PADのEOFを受けて,終了処理。
  221. FCLOSE                        #_PAD_.PADを閉じる。
  222. DELFILE(I$)                    #_PAD_.PADを削除。
  223. GOTO(AAA)
  224.  
  225. #=========================================================================
  226. NEXT_:                        #マルチポスト指定ルーチン。SENDから,/Eがある場合。
  227. SEND(F$)                    #F$=/E,/E送信。
  228. SEND("\R")
  229. CALL(LOOP0)
  230. SEND("\R")                    #修正確認。
  231. JUMPSRCHY(T$,"MAIL",MLO)    #MAIL送信の場合,宛先送信処理,後NEXT__へ。
  232. CALL(LOOP0)
  233. SEND("\R")                    #BBS登録確認。
  234.  
  235. NEXT__:                        #/Eの後の続きの判断分岐。
  236. RREAD(F$,EOF_)                #ファイル末ならば終了処理へ。続きがあれば,書き込み処理。
  237. CALL(LOOP0)
  238. SEND("W\R")                    #継続書き込みコマンド送信。
  239. LEFT(F$,"30")                #TITEL読込。長さ調整。
  240. CALL(LOOP0)
  241. CONVERT("OFF")
  242. SEND(F$)                    #TITLE送信。
  243. CONVERT("ON")
  244. SEND("\R")
  245. CALL(LOOP0)
  246. SEND("\R")                    #TITLE確認。
  247. GOTO(SEND)                    #汎用送信ループへ戻る。
  248.  
  249. EOF_:                        #登録確認後の終了処理。
  250. JUMPSRCHY(T$,"MAIL",MAIL000)
  251.                             #MAILの場合。送信済ファイル移動処理へ。
  252. GOTO(BBS0_)                    #会議室の場合。送信済ファイル移動処理へ。
  253.  
  254. MLO:                        #NEXT_から,宛先送信処理。
  255. CALL(LOOP0)
  256. SEND(A$)                    #宛先送信。
  257. SEND("\R")
  258. U$="NEXT__"                    #IDMISの場合の移動先フラグ。
  259. STIMEOUT(2)
  260. SWITCH
  261.     CASE("◆")                #エラーメッセージの有無確認。
  262.         GOTO(IDMIS)
  263. END
  264. CALL(LOOP0)
  265. SEND("\R")                    #宛先登録確認。
  266. GOTO(NEXT__)                #続き存否確認処理へ。
  267.  
  268. IDMIS:                        #居場所フラグにはU$を使用。
  269. CALL(LOOP0)
  270. PRINTCR("")
  271. PRINTCR("□送信先ID or ハンドル名にミスがありましたので,貴方宛に送信します□")
  272. SEND(W$)                    #W$=USER ID or ハンドル名。
  273. SEND("\R")
  274. CALL(LOOP0)
  275. SEND("\R")                    #宛先登録確認。
  276. GOTO(U$)                    #U$は居場所フラグ。指定先へ。
  277.  
  278. #=========================================================================
  279. AAA:                        #PAD指定処理開始。
  280. S$="MAR.PAD"                #MAR.PADは行動指定ファイル。
  281. E$="/"                        #MAR.PAD内区切り文字。
  282. O$="_"                        #MAR.PAD内区切り文字。
  283. P$="."                        #MAR.PAD内区切り文字。
  284. GETTXUPD(I$)                #I$=G:\WT\UP_TXT\
  285. CAT(B$,I$,S$)                #B$=G:\WT\UP_TXT\MAR.PAD。PAD処理中はB$は固定。
  286. ROPEN(B$,READ0)                #MAR.PADがなければ,READ0へ。
  287. RREAD(A$)                    #MAR.PADから一行,A$へ読み込み。
  288. VSWAP(A$,X$)                #A$とX$を交換。
  289. IFE(X$,"")                    #X$はMAR.PADの一行目,一行伝言。ほぼ固定。
  290.     X$="/E"                    #一行伝言が改行のみの場合は,/Eとする。
  291. CAT(I$,"MAR.WRK")            #I$=G:\WT\UP_TXT\MAR.WRK
  292. WOPEN(I$)                    #MAR.WRK作成。
  293. WCLOSE                        #WAPPENDのために,いったん閉じる。
  294. WAPPEND(I$)                    #MAR.WRKオープン。
  295. WRITE("")                    #一行伝言部分を削除して空白を書き込む。
  296. WCLOSE                        #MAR.WRKを閉じる。
  297.  
  298. #=========================================================================
  299. DAT_:                        #>に戻って,CHATに入るかどうかを決めるルーチン。
  300. D$=""
  301. VSWITCH(R$)                    #LOOP0でR$を設定。
  302.     CASE("C")                #CHATメッセージがあった場合,R$=C。
  303.         CALL(CHAT)            #CHATへ。
  304.         VCLEAR("R")            #CHATから復帰。
  305.         GOTO(DAT1)            #MAR.PADファイル指定読み込みルーチンへ。
  306.     ELSE                    #R$がCでない場合。
  307.         GOTO(DAT1)
  308. END
  309.  
  310. #=========================================================================
  311. DAT1:                        #MAR.PAD内指定読み取りルーチン。
  312. RREAD(A$)                    #MAR.PADから二行目以降をA$へ読み込み。
  313. JUMPE(A$,"",DAT1)            #空白のみの行の場合,DAT1へ戻る。
  314. J$=A$                        #J$はWAPPEND書き込み用変数。
  315. U$=A$
  316. LEFT(U$,"1")
  317. JUMPE(U$,"#",DAT1)            #「#」で始まるコメント行の場合,DAT1へ戻る。
  318. VSWITCH(A$)
  319.     CASE("SEL")                #MENU SELECTER へ。
  320.         U$="READ"            #U$は移動先フラグ。
  321.         GOTO(DAT3)
  322.     CASE("OFF")                #自動一行伝言書き込み終了へ。
  323.         U$="READ2"
  324.         GOTO(DAT3)
  325.     CASE("BYE")                #手動一行伝言書き込み終了へ。
  326.         U$="READ1"
  327.         GOTO(DAT3)
  328.     CASE("PAS")                #未読処理をせずに,MENU SELECTERへ。
  329.         U$="SELECT0"
  330.         GOTO(DAT3)
  331.     ELSE
  332.         GOTO(DAT2)
  333. END
  334.  
  335. #-------------------------------------------------------------------------
  336. DAT2:                        #「/」指定の分岐。
  337. JUMPE(A$,"DLN/",DLN)        #最新DLリスト取得指定の場合。
  338. PICKWORD(D$,A$,E$)            #/で区切った内容を分離。
  339. JUMPE(D$,"B",DAT1)            #旧版指定の場合。
  340. JUMPE(D$,"M",DAT1)            #旧版指定の場合。
  341. JUMPE(D$,"C",DAT1)            #ハンドル名変更指定。
  342. JUMPE(D$,"R",DAT1)            #BC読み指定。
  343. JUMPE(D$,"W",DAT1)            #BC書き指定。
  344. JUMPE(D$,"U",DAT1)            #UPLOAD指定。
  345. JUMPE(D$,"D",DOWN)            #DWONLOAD指定。
  346. JUMPE(D$,"P",PRO)            #プロフィール取得指定。
  347. JUMPE(D$,"L",DL_)            #DLリスト取得指定の場合。
  348. JUMPE(D$,"K",KES)            #発言削除指定の場合。
  349. JUMPE(A$,"",DO)                #直接コマンド入力指定の場合。
  350.  
  351. #-------------------------------------------------------------------------
  352. DAT3:
  353. WAPPEND(I$)                    #追加書き込みに,MAR.WRKをオープン。
  354. WRITE(J$)                    #MAR.PAD内容をMAR.WRKに書き込む。
  355.  
  356. DAT4:                        #読み込み行以下をMAR.WRKに書き込むルーチン。
  357. RREAD(J$,DAT5)                #MAR.PADから読み込み。EOFならば,DAT5へ。
  358. WRITE(J$)                    #MAR.WRKに書き込み。
  359. GOTO(DAT4)
  360.  
  361. DAT5:                        #MAR.PAD最終処理ルーチン。
  362. WCLOSE                        #MAR.WRKを閉じる。
  363. RCLOSE                        #MAR.PADを閉じる。
  364. A$=""
  365. CAT(A$,"DEL ",B$)            #A$=DEL G:\WT\UP_TXT\MAR.PAD
  366. CHILD(A$)                    #MAR.PAD削除。
  367. DELAYM(1500)                #同期調整。
  368. CHANGE(B$,"MAR.PAD","MAR.WRK")
  369. A$=""
  370. CAT(A$,"REN ",B$)            #A$=REN G:\WT\UP_TXT\MAR.WRK
  371. CAT(A$," MAR.PAD")            #A$=REN G:\WT\UP_TXT\MAR.WRK MAR.PAD
  372. CHILD(A$)                    #MAR.WRKを,MAR.PADに改名。
  373. DELAYM(1500)                #同期調整。
  374. GOTO(U$)                    #DAT1で格納した移動先へ。
  375.  
  376. #=========================================================================
  377. DOWN:                        #DOWNLOAD指定。
  378. PICKWORD(D$,A$,E$)            #D$はDL番号。A$=23/***.LZH
  379. PICKWORD(H$,A$,E$)            #H$はDOWNLOADデータ番号。A$はデータ名。
  380. JUMPE(A$,"",DAT_)            #指定ミスの場合。
  381. JUMPE(D$,"",DAT_)
  382. JUMPE(H$,"",DAT_)
  383. U$=A$
  384. SEND("DL\R")                #DLへ。
  385. STIMEOUT(2)
  386. SWITCH
  387.     CASE("◆")
  388.         GOTO(DAT_)            #DLに入れない場合。
  389. END
  390. CALL(LOOP0)
  391. SEND(D$)                    #DL番号送信。
  392. SEND("\R")
  393. STIMEOUT(2)
  394. SWITCH
  395.     CASE("◆")
  396.         GOTO(DWMIS)            #指定DLに入れない場合。
  397. END
  398. CALL(LOOP0)
  399. SEND("3\R")                    #DOWNLOAD選択。
  400. STIMEOUT(2)
  401. SWITCH
  402.     CASE("◆")
  403.         GOTO(DWMIS)            #DOWNLOAD不可能の場合。
  404. END
  405. CALL(LOOP0)
  406. SEND(H$)                    #DOWNLOADデータ番号送信。
  407. SEND("\R")
  408. STIMEOUT(2)
  409. SWITCH
  410.     CASE("◆")
  411.         GOTO(DWMIS1)        #DOWNLOAD番号エラー。
  412. END
  413. CALL(LOOP0)
  414. SEND("1\R")                    #確認。
  415. CALL(LOOP0)
  416. SEND("1\R")                    #受信方法選択。
  417. DELAYM(4000)                #同期調整。
  418. DOWNLOAD(4,U$,ERROR)        #F-Xmodemによる受信。
  419. DELAYM(500)                    #同期調整。
  420. SEND("\R")                    #同期調整のための改行送信。
  421. CALL(LOOP0)
  422. SEND("T\R")                    #DLを抜ける。
  423. VCLEAR("HU")
  424. CALL(LOOP0)
  425. GOTO(DAT_)
  426.  
  427. #-------------------------------------------------------------------------
  428. DWMIS1:                        #データ番号ミスの場合。
  429. CALL(LOOP0)
  430. SEND("\R")                    #リターン送信で,DOWNLOADを抜ける。
  431.  
  432. DWMIS:                        #DLに入れない場合。DWONLOAD不可能の場合。
  433. CALL(LOOP0)
  434. SEND("T\R")                    #メインプロンプトへ。
  435. CALL(LOOP0)
  436. VCLEAR("HU")
  437. GOTO(DAT_)
  438.  
  439. #=========================================================================
  440. READ0:                        #MAR.PADが存在しない場合,一行伝言を設定。
  441. X$="また来るねぇ~ (^^)/゚"
  442.  
  443. READ:
  444. U$="SELECT0"
  445. GOTO(R1)
  446.  
  447. READ1:
  448. U$="OFF4"
  449. GOTO(R1)
  450.  
  451. READ2:
  452. U$="OFF1"
  453.  
  454. #-------------------------------------------------------------------------
  455. R1:
  456. JUMPSRCHN(N$,"あります",R2)    #メール未読があれば,READ000へ。
  457. GOTO(READ000)
  458.  
  459. R2:
  460. JUMPSRCHN(M$,"あります",U$)    #会議室未読がなければ,U$へ。
  461.  
  462. #-------------------------------------------------------------------------
  463. READ000:
  464. PRINTCR("□未読状況を調査しています□")
  465. LOGOPEN("TEMP")                #会議室未読状況書き込み作業ログファイル作成。
  466. SEND("B\R")                    #会議室未読状況取得コマンド。
  467. CALL(LOOP0)
  468. GETLOGD(I$)                    #I$=G:\WT\LOG\
  469. CAT(I$,"TEMP.LOG")            #I$=G:\WT\LOG\TEMP.LOG
  470. LOGCLOSE                    #TEMP.LOG閉じる。
  471. LOGOPEN("MAR")
  472. FOPEN(I$)                    #作業ログファイル読みだしオープン。
  473. FREAD(A$)                    #TEMP.LOGの一行目のBを捨てる。
  474.  
  475. READC:                        #作業ログファイル読みだしルーチン。
  476. FREAD(A$,READG)                #作業ログファイルから読み込み。
  477. JUMPSRCHY(A$,"S)31",READDD)    #(BBS)31は会議室数上限。
  478. JUMPSRCHY(A$,"手紙",READF)    #未読のメールがある場合。
  479. JUMPSRCHN(A$,"未読数   0",READD)
  480.                             #未読 0,がない場合(会議室未読がある場合)。
  481. GOTO(READC)
  482.  
  483. READDD:                        #31番会議室未読有無確認。
  484. JUMPSRCHN(A$,"未読数   0",READFF)
  485.                             #未読 0,がない場合(会議室未読がある場合)。
  486. GOTO(READG)                    #31番会議室未読がない場合は終了処理へ。
  487.  
  488. READD:                        #会議室未読がある場合。
  489. LEFT(A$,"7")                #作業ログファイルの一行を,左7バイト取り出し。
  490. RIGHT(A$,"2")                #取り出したものの,右2バイト取り出し。
  491. DELSPACE(H$,A$)                #取り出したものから空白を除去。
  492. SEND(H$)                    #H$は会議室番号。
  493. SEND("\R")
  494. CALL(LOOP0)
  495. SEND("/N\R")                #会議室未読の処理。/ALLは使えない。
  496. CALL(LOOP0)
  497. F$="READC"                    #F$はSELECT_で使用する,移動先フラグ。
  498. GOTO(SELECT_)                #チャットサイン有無確認ループへ。
  499.  
  500. READF:                        #未読のメールがある場合。
  501. SEND("M\R")
  502. CALL(LOOP0)
  503. SEND("/N\R")                #未読処理コマンド。
  504. CALL(LOOP0)
  505. F$="READC"                    #F$はSELECT_で使用する,移動先フラグ。
  506. GOTO(SELECT_)                #チャットサイン有無確認ループへ。
  507.  
  508. READFF:                        #31番会議室に未読がある場合の処理。
  509. SEND("31\R")
  510. CALL(LOOP0)
  511. SEND("/N\R")                #会議室未読の処理。/ALLは使えない。
  512. CALL(LOOP0)
  513. F$="READG"                    #F$はSELECT_で使用する,移動先フラグ。
  514. GOTO(SELECT_)                #チャットサイン有無確認ループへ。
  515.  
  516. READG:                        #未読処理作業終了処理ルーチン。
  517. FCLOSE
  518. DELFILE(I$)                    #作業ログファイルの削除。
  519. VSWITCH(R$)                    #CHATサイン有無判断ルーチン。
  520.     CASE("C")
  521.         CALL(CHAT)
  522.         R$=""
  523.         GOTO(U$)            #U$は移動先フラグ。
  524.     ELSE
  525.         GOTO(U$)
  526. END
  527.  
  528. #=========================================================================
  529. SELECT_:                    #CHAT信号判断ルーチン。
  530.     VSWITCH(R$)
  531.         CASE("C")
  532.             CALL(CHAT)
  533.             R$=""
  534.             GOTO(F$)
  535.         ELSE
  536.             GOTO(F$)
  537.     END
  538.  
  539. #-------------------------------------------------------------------------
  540. SELECT0:
  541. H$="GAMEをします。 GAME内は,自由行動です。+未読ポインター移動を行います。"
  542. I$="他にも色々できるよ。+未読情報を表示します。"
  543. J$="ログアウトします。"
  544. SMENU(H$,I$,J$)
  545. VSWITCH(H$)
  546.     CASE("0")
  547.         PRINTCR("          MACRO STOP! SEE YOU AGAIN!  (^o^)/゚")
  548.         EXIT
  549.     CASE("1")
  550.         GOTO(GAME)
  551.     CASE("2")
  552.         GOTO(ETC)
  553.     CASE("3")
  554.         GOTO(OFF1)
  555.     CASE("4")
  556.         GOTO(HAND)
  557.     CASE("5")
  558.         Y$="BST"
  559.         GOTO(ETC1)
  560.     ELSE
  561.         GOTO(SELECT0)
  562. END
  563.  
  564. ETC:
  565. H$="各種 RANK表示をします。+もっと,いろいろできるよ。"
  566. I$="誰がアクセスしてるかな?+一行伝言デフォルト内容の確認をします。"
  567. J$="今日はどんな日かな?+一行伝言をデフォルトで入力してログアウトします。"
  568. SMENU(H$,I$,J$)
  569. VSWITCH(H$)
  570.     CASE("0")
  571.         GOTO(SELECT0)
  572.     CASE("1")
  573.         GOTO(ETC01)
  574.     CASE("2")
  575.         Y$="LOG"
  576.         GOTO(ETC1)
  577.     CASE("3")
  578.         Y$="DAY"
  579.         GOTO(ETC1)
  580.     CASE("4")
  581.         GOTO(ETC2)
  582.     CASE("5")
  583.         GOTO(DEF)
  584.     CASE("6")
  585.         GOTO(OFF4)
  586.     ELSE
  587.         GOTO(ETC)
  588. END
  589.  
  590. ETC01:
  591. H$="所有GOLD RANKINGを表示します。+発言回数RANKINGを表示します。"
  592. I$="書き込み率RANKINGを表示します。"
  593. J$="アクセス回数RANKINGを表示します。"
  594. SMENU(H$,I$,J$)
  595. VSWITCH(H$)
  596.     CASE("0")
  597.         GOTO(ETC)
  598.     CASE("1")
  599.         Y$="GRNK"
  600.         GOTO(ETC1)
  601.     CASE("2")
  602.         Y$="RRNK"
  603.         GOTO(ETC1)
  604.     CASE("3")
  605.         Y$="ARNK"
  606.         GOTO(ETC1)
  607.     CASE("4")
  608.         Y$="WRNK"
  609.         GOTO(ETC1)
  610.     ELSE
  611.         GOTO(ETC01)
  612.     END
  613.  
  614. ETC2:
  615. H$="50,000GOLD取得者を表示します。+規約等を読みます。"
  616. I$="PROFIELを表示します。"
  617. J$="自由行動します。"
  618. SMENU(H$,I$,J$)
  619. VSWITCH(H$)
  620.     CASE("0")
  621.         GOTO(SELECT0)
  622.     CASE("1")
  623.         Y$="KING"
  624.         GOTO(ETC1)
  625.     CASE("2")
  626.         Y$="PROF"
  627.         GOTO(PROF)
  628.     CASE("3")
  629.         GOTO(ETC4)
  630.     CASE("4")
  631.         GOTO(ETC3)
  632.     ELSE
  633.         GOTO(ETC2)
  634. END
  635.  
  636. ETC3:
  637. H$="規約を読みます。+SYSOPとチャットをします。抜ける時は「/E」を入れてね。"
  638. I$="郵送規約を読みます。"
  639. J$="会議室とボードチャットの一覧を見ます(MAP)。"
  640. SMENU(H$,I$,J$)
  641. VSWITCH(H$)
  642.     CASE("0")
  643.         GOTO(SELECT0)
  644.     CASE("1")
  645.         Y$="規約"
  646.         GOTO(ETC1)
  647.     CASE("2")
  648.         Y$="郵送"
  649.         GOTO(ETC1)
  650.     CASE("3")
  651.         Y$="MAP"
  652.         GOTO(ETC1)
  653.     CASE("4")
  654.         GOTO(CHATS)
  655.     ELSE
  656.         GOTO(ETC2)
  657. END
  658.  
  659. #=========================================================================
  660. HAND:
  661. F$="SELECT0"
  662. INPUT(H$,"ポインター移動をする会議室番号を入力して下さい:","705.60")
  663. JUMPE(H$,"",SELECT_)        #入力がない場合。
  664. SEND(H$)
  665. SEND("\R")
  666. CALL(LOOP0)
  667. DELAYM(500)                    #同期調整。
  668. GETCRTS(A$,"2")                #会議室移動確認。
  669. JUMPSRCHY(A$,"◆",SELECT_)
  670. INPUT(H$,"移動ポインター数を入力して下さい:","705.60")
  671. JUMPE(H$,"",SELECT_)        #入力がない場合。
  672. SEND("RP ")
  673. SEND(H$)
  674. SEND("\R")
  675. CALL(LOOP0)
  676. DELAYM(500)                    #同期調整。
  677. GOTO(SELECT_)
  678.  
  679. #=========================================================================
  680. ETC4:
  681. INPUT(H$,"コマンドを正確に入力して下さい:","705.60")
  682. JUMPE(H$,"",SELECT0)
  683. SEND(H$)
  684. SEND("\R")
  685. CALL(LOOP0)
  686. F$="ETC2"
  687. GOTO(SELECT_)
  688.  
  689. #=========================================================================
  690. PRO:                        #MAR.PAD指定から。
  691. JUMPE(A$,"",DAT1)
  692. SEND("PROF ")
  693. SEND(A$)
  694. SEND("\R")
  695. CALL(LOOP0)
  696. GOTO(DAT_)
  697.  
  698. #-------------------------------------------------------------------------
  699. PROF:                        #SELECTERから。
  700. INPUT(H$,"ID or ハンドル名を正確に入力して下さい:","705.60")
  701. JUMPE(H$,"",SELECT0)        #ID等の指定がない場合。
  702. CAT(Y$," ")
  703. CAT(Y$,H$)
  704. SEND(Y$)
  705. SEND("\R")
  706. CALL(LOOP0)
  707. DELAYM(1500)                #同期調整。
  708. F$="SLECT0"
  709. GOTO(SELECT_)
  710.  
  711. #=========================================================================
  712. DEF:
  713. PRINTCR("")
  714. PRINTCR("一行伝言に設定されているのは----")
  715. PRINTCR(X$)
  716. PRINTCR("----です。")
  717. F$="ETC"
  718. GOTO(SELECT_)                #プロンプト表示は待たない。
  719.  
  720. #=========================================================================
  721. ETC1:
  722. SEND(Y$)
  723. SEND("\R")
  724. CALL(LOOP0)
  725. F$="SELECT0"
  726. GOTO(SELECT_)
  727.  
  728. ETC01:
  729. SEND(Y$)
  730. SEND("\R")
  731. CALL(LOOP0)
  732. F$="ETC3"
  733. GOTO(SELECT_)
  734.  
  735. #=========================================================================
  736. GAME:
  737. SEND("GAME\R")
  738. F$="GAME0"
  739.  
  740. GAME0:
  741. L$=")>"
  742. CALL(LOOP1)
  743. GOTO(SELECT0)
  744.  
  745. #=========================================================================
  746. OFF1:
  747. SEND("OFF\R")
  748. L$="\013\010:"
  749. F$="OFF2"
  750. C$="/C\R"
  751. CALL(LOOP1)
  752. SEND("\R")
  753. CALL(LOOP1)
  754.  
  755. OFF2:
  756. INPUT(A$,"一行伝言を入力して下さい。",705.120)
  757. CONVERT(OFF)
  758. SEND(A$)
  759. CONVERT(ON)
  760. SEND("\R")
  761. JUMPE(A$,"",OUT)
  762. JUMPE(A$,"/E",OUT)
  763. WAIT("\010:")
  764. SEND("\R")
  765. GOTO(OUT)
  766.  
  767. #-------------------------------------------------------------------------
  768. OFF4:
  769. SEND("OFF\R")
  770. L$="\013\010:"
  771. F$="OFF5"
  772. C$="/C\R"
  773. CALL(LOOP1)
  774. SEND("\R")
  775. CALL(LOOP1)
  776.  
  777. OFF5:
  778. CONVERT(OFF)
  779. SEND(X$)
  780. CONVERT(ON)
  781. SEND("\R")
  782. JUMPE(X$,"/E",OUT)
  783. WAIT("\010:")
  784. SEND("\R")
  785. GOTO(OUT)
  786.  
  787. #-------------------------------------------------------------------------
  788. OUT:
  789. WAIT("切断します-")
  790. PRINTCR("")
  791. PRINTCR("")
  792. PRINTCR("                MACRO STOP! SEE YOU AGAIN!  (^o^)/゚")
  793. PRINTCR("")
  794. PRINTCR("                          また来てね! ")
  795. LOGCLOSE
  796. EXIT                        #マクロ終了。
  797.  
  798. #=========================================================================
  799. LOOP0:
  800. SWITCH
  801.     CASE("T{^。^`}ヨホホホ。")
  802.         GETCRTS(Z$,"0")
  803.         R$="C"
  804.         RETURN
  805.     CASE("+\013\010")
  806.         WAIT("",1,LOOP0)
  807.         RETURN
  808.     CASE("0\013\010")
  809.         WAIT("",1,LOOP0)
  810.         RETURN
  811.     CASE("い\013\010:")
  812.         WAIT(" ",1,LOOP0)
  813.         RETURN
  814.     CASE("\010:")
  815.         WAIT("",1,LOOP0)
  816.         RETURN
  817.     CASE("\010:")
  818.         WAIT("",1,LOOP0)
  819.         RETURN
  820.     CASE("名】:")
  821.         WAIT("",1,LOOP0)
  822.         RETURN
  823.     CASE(">")
  824.         GETCRTS(Z$,"0")
  825.         WAIT("",1,LOOP0)
  826.         RETURN
  827.     CASE("):")
  828.         WAIT("",1,LOOP0)
  829.         RETURN
  830.     CASE(":")
  831.         WAIT("",1,LOOP0)
  832.         RETURN
  833. END
  834. RETURN
  835.  
  836. #-------------------------------------------------------------------------
  837. LOOP1:
  838. SWITCH
  839.     CASE("\013\010:CHAT{^。^`}ヨホホホ。")
  840.         CALL(CHA)
  841.     CASE(":CHAT{^。^`}ヨホホホ。")
  842.         CALL(CHA)
  843.     CASE("e:CHAT{^。^`}ヨホホホ。")
  844.         CALL(CHA1)
  845.     CASE("T{^。^`}ヨホホホ。")
  846.         GETCRTS(Z$,"0")
  847.         CALL(CHAT)
  848.     CASE(L$)
  849.         GETCRTS(Z$,"0")
  850.         WAIT("",1,LOOP1)
  851.         RETURN
  852. END
  853. RETURN
  854.  
  855. #=========================================================================
  856. CHA1:
  857. SEND("0\R")
  858. WAIT(")>")
  859. CALL(CHAT)
  860. RETURN
  861.  
  862. CHAT:
  863. DELAYM(1000)
  864. SEND(C$)
  865. CALL(CHAT0)
  866. RETURN
  867.  
  868. CHAT0:
  869. WAIT("",1,CHAT0)
  870. VCLEAR("A")
  871. INPUT(A$,"チャットは楽しいね。",705.60)
  872. IFE(A$,"")
  873.     CALL(CHATERR)
  874. CONVERT(OFF)
  875. SEND(A$)
  876. CONVERT(ON)
  877. SEND("\R")
  878. IFE(A$,"/E")
  879.     RETURN
  880. GOTO(CHAT0)
  881.  
  882. CHATERR:
  883. SEND("自動運転中で,反応できないの。ごめんなさい。 m(_._)m\R")
  884.  
  885. CHATERR0:
  886. WAIT("",1,CHATERR0)
  887. A$="/E"
  888. RETURN
  889.  
  890. CHATS:
  891. WAIT("",1,CHATS)
  892. SEND("C\R")
  893.  
  894. CHATS0:
  895. WAIT("",1,CHATS0)
  896. INPUT(R$,"チャットは楽しいね。",705.120)
  897. CONVERT(OFF)
  898. SEND(R$)
  899. CONVERT(ON)
  900. SEND("\R")
  901. JUMPE(R$,"/E",CHATS1)
  902. JUMPE(R$,"/e",CHATS1)
  903. GOTO(CHATS0)
  904.  
  905. CHATS1:
  906. WAIT("",1,CHATS1)
  907. GOTO(SELECT0)
  908.  
  909. #=========================================================================
  910. DO:
  911. JUMPE(D$,"",DAT1)
  912. SEND(D$)
  913. SEND("\R")
  914. CALL(LOOP0)
  915. GOTO(DAT_)
  916.  
  917. #=========================================================================
  918. KES:                        #自発言削除指定の場合。
  919. JUMPE(A$,"",DAT_)            #会議室等の指定がない場合。
  920. PICKWORD(U$,A$,E$)            #/で区切る。U$は会議室番号。
  921. JUMPE(U$,"",DAT_)            #会議室指定がない場合(//となっている)。
  922. JUMPE(A$,"",DAT_)            #発言番号指定がない場合。
  923. JUMPE(U$,"1",DAT_)            #1番会議室を指定した場合。
  924. SEND(U$)                    #指定会議室への移動送信。
  925. SEND("\R")
  926. STIMEOUT(2)
  927. SWITCH
  928.     CASE("◆")                #会議室に入れない場合。
  929.         GOTO(ERR3)
  930. END
  931. CALL(LOOP0)
  932. SEND("DEL ")                #発言削除コマンド送信。
  933. SEND(A$)                    #削除発言番号送信。
  934. SEND("\R")
  935. STIMEOUT(2)
  936. SWITCH
  937.     CASE("◆")
  938.         GOTO(ERR3)
  939. END
  940. CALL(LOOP0)
  941. SEND("1\R")                    #削除の確認。
  942. VCLEAR("UH")
  943. CALL(LOOP0)
  944. GOTO(DAT_)
  945.  
  946. #=========================================================================
  947. DL_:                        #DLリスト取得指定の場合。
  948. JUMPE(A$,"",DAT1)
  949. SEND("DL\R")                #DLへ。
  950. STIMEOUT(2)
  951. SWITCH
  952.     CASE("◆")
  953.         GOTO(ERR3)
  954. END
  955. CALL(LOOP0)
  956. SEND(A$)                    #DL番号送信。
  957. SEND("\R")
  958. STIMEOUT(2)
  959. SWITCH
  960.     CASE("◆")
  961.         GOTO(ERR2)            #DLを抜けてメインプロンプトへ戻る処理へ。
  962. END
  963. CALL(LOOP0)
  964. SEND("1\R")                    #リスト取得選択。
  965.  
  966. SWI:                        #DLプロンプト判断ルーチン。
  967. SWITCH
  968.     CASE("):")
  969.         WAIT("",1,SWI)
  970.         GOTO(TSE)
  971.     CASE("\010:")
  972.         WAIT("",1,SWI)
  973.         GOTO(ESE)
  974.     ELSE
  975.         GOTO(SWI)
  976. END
  977.  
  978. ESE:                        #リストが数頁ある場合。
  979. SEND("E\R")                    #表示終了送信。
  980. CALL(LOOP0)
  981. SEND("T\R")                    #DLを抜ける。
  982. CALL(LOOP0)
  983. GOTO(DAT_)
  984.  
  985. TSE:                        #リストが1頁分しかない場合。
  986. SEND("T\R")                    #DLを抜ける。
  987. CALL(LOOP0)
  988. GOTO(DAT_)
  989.  
  990. #=========================================================================
  991. DLN:                        #最新DLリスト取得指定の場合。
  992. SEND("DL\R")                #DLへ。
  993. STIMEOUT(2)
  994. SWITCH
  995.     CASE("◆")
  996.         GOTO(ERR3)
  997. END
  998. CALL(LOOP0)
  999. SEND("N\R")                    #最新リスト取得コマンド送信。
  1000. CALL(LOOP0)
  1001. SEND("T\R")                    #DLを抜ける。
  1002. CALL(LOOP0)
  1003. GOTO(DAT_)
  1004.  
  1005. #=========================================================================
  1006. ERR2:                        #DLモードに入った後,指定番号DLに入れない場合。
  1007. CALL(LOOP0)
  1008. SEND("T\R")                    #メインプロンプトへ復帰。
  1009. CALL(LOOP0)
  1010. GETCRTS(Z$,"0")
  1011. GOTO(DAT1)
  1012.  
  1013. ERR3:                        #LOOP0の前の場合。
  1014. CALL(LOOP0)
  1015. GETCRTS(Z$,"0")
  1016. GOTO(DAT1)
  1017.  
  1018. #=========================================================================
  1019. RETRY:
  1020. PRINTCR("□この会議室には書き込めません。指定ファイルをリネームします□")
  1021. RCLOSE
  1022. A$=""
  1023. CAT(A$,"REN ",D$)            #A$=REN G:\WT\UP_TXT\12_505.RES
  1024. CAT(A$," *.ERR")            #A$=REN G:\WT\UP_TXT\12_505.RES *.ERR
  1025. CHILD(A$)                    #書き込みエラーファイルの拡張子をERRにリネーム。
  1026. DELAYM(1500)                #同期調整。
  1027. VCLEAR("ALJF")                #J$,L$は会議室番号,レス先番号等で使用。
  1028. GOTO(DAT__)
  1029.  
  1030. #=========================================================================
  1031.